//package com.artifex.mupdfdemo;
//
//import java.io.ByteArrayOutputStream;
//import java.io.InputStream;
//
//import android.app.Activity;
//import android.content.ActivityNotFoundException;
//import android.content.ContentResolver;
//import android.content.Intent;
//import android.os.Bundle;
//import android.util.Base64;
//import android.webkit.WebSettings;
//import android.webkit.WebView;
//import android.webkit.WebViewClient;
//
//public class PrintDialogActivity extends Activity {
//	private static final String PRINT_DIALOG_URL = "https://www.google.com/cloudprint/dialog.html";
//	private static final String JS_INTERFACE = "AndroidPrintDialog";
//	private static final String CONTENT_TRANSFER_ENCODING = "base64";
//
//	private static final String ZXING_URL = "http://zxing.appspot.com";
//	private static final int ZXING_SCAN_REQUEST = 65743;
//
//	/**
//	 * Post message that is sent by Print Dialog web page when the printing dialog
//	 * needs to be closed.
//	 */
//	private static final String CLOSE_POST_MESSAGE_NAME = "cp-dialog-on-close";
//
//	/**
//	 * Web view element to show the printing dialog in.
//	 */
//	private WebView dialogWebView;
//
//	/**
//	 * Intent that started the action.
//	 */
//	Intent cloudPrintIntent;
//
//	private int resultCode;
//
//	@Override
//	public void onCreate(Bundle icicle) {
//		super.onCreate(icicle);
//
//		resultCode = RESULT_OK;
//		setContentView(R.layout.print_dialog);
//		dialogWebView = (WebView) findViewById(R.id.webview);
//		cloudPrintIntent = this.getIntent();
//
//		WebSettings settings = dialogWebView.getSettings();
//		settings.setJavaScriptEnabled(true);
//
//		dialogWebView.setWebViewClient(new PrintDialogWebClient());
//		dialogWebView.addJavascriptInterface(
//			new PrintDialogJavaScriptInterface(), JS_INTERFACE);
//
//		dialogWebView.loadUrl(PRINT_DIALOG_URL);
//	}
//
//	@Override
//	public void onActivityResult(int requestCode, int resultCode, Intent intent) {
//		if (requestCode == ZXING_SCAN_REQUEST && resultCode == RESULT_OK) {
//			dialogWebView.loadUrl(intent.getStringExtra("SCAN_RESULT"));
//		}
//	}
//
//	final class PrintDialogJavaScriptInterface {
//		public String getType() {
//			return cloudPrintIntent.getType();
//		}
//
//		public String getTitle() {
//			return cloudPrintIntent.getExtras().getString("title");
//		}
//
//		public String getContent() {
//			try {
//				ContentResolver contentResolver = getContentResolver();
//				InputStream is = contentResolver.openInputStream(cloudPrintIntent.getData());
//				ByteArrayOutputStream baos = new ByteArrayOutputStream();
//
//				byte[] buffer = new byte[4096];
//				int n = is.read(buffer);
//				while (n >= 0) {
//					baos.write(buffer, 0, n);
//					n = is.read(buffer);
//				}
//				is.close();
//				baos.flush();
//
//				return Base64.encodeToString(baos.toByteArray(), Base64.DEFAULT);
//			} catch (Throwable e) {
//				resultCode = RESULT_CANCELED;
//				setResult(resultCode);
//				finish();
//				e.printStackTrace();
//			}
//			return "";
//		}
//
//		public String getEncoding() {
//			return CONTENT_TRANSFER_ENCODING;
//		}
//
//		public void onPostMessage(String message) {
//			if (message.startsWith(CLOSE_POST_MESSAGE_NAME)) {
//				setResult(resultCode);
//				finish();
//			}
//		}
//	}
//
//	private final class PrintDialogWebClient extends WebViewClient {
//		@Override
//		public boolean shouldOverrideUrlLoading(WebView view, String url) {
//			if (url.startsWith(ZXING_URL)) {
//				Intent intentScan = new Intent("com.google.zxing.client.android.SCAN");
//				intentScan.putExtra("SCAN_MODE", "QR_CODE_MODE");
//				try {
//					startActivityForResult(intentScan, ZXING_SCAN_REQUEST);
//				} catch (ActivityNotFoundException error) {
//					view.loadUrl(url);
//				}
//			} else {
//				view.loadUrl(url);
//			}
//			return false;
//		}
//
//		@Override
//		public void onPageFinished(WebView view, String url) {
//			if (PRINT_DIALOG_URL.equals(url)) {
//				// Submit print document.
//				view.loadUrl("javascript:printDialog.setPrintDocument(printDialog.createPrintDocument("
//					+ "window." + JS_INTERFACE + ".getType(),window." + JS_INTERFACE + ".getTitle(),"
//					+ "window." + JS_INTERFACE + ".getContent(),window." + JS_INTERFACE + ".getEncoding()))");
//
//				// Add post messages listener.
//				view.loadUrl("javascript:window.addEventListener('message',"
//						+ "function(evt){window." + JS_INTERFACE + ".onPostMessage(evt.data)}, false)");
//			}
//		}
//	}
//}
